/*
 * @Author: c
 * @Date: 2024-01-17 18:45:05
 * @LastEditTime: 2024-02-05 03:10:32
 * @LastEditors: c
 * @Description: 
 * @FilePath: \music-web-backend\src\common\type\file.ts
 * https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
// Copyright 2024 Administrator
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
//     http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and

import { Transform } from "class-transformer";
import { IsEnum, IsNotEmpty, IsNumber, IsOptional, IsString, IsUUID, IsUrl } from "class-validator";
import { PictorialEnum } from "src/core/music/picture/enum";

// limitations under the License.
type UploadStatus = 'ready' | 'uploading' | 'success' | 'fail';


// export class UploadRawFile extends File {
//     uid: number;
// }

export class UploadFile {

    @IsUUID('all', { message: "文件id格式不对" })
    id: string

    @IsNotEmpty()
    @IsString()
    @Transform(value => encodeURI(value))
    name: string;

    @IsOptional()
    @IsNumber()
    percentage?: number;

    // status: UploadStatus;

    @IsNumber()
    size?: number;

    // response?: unknown;

    @Transform(v => +v)
    @IsNumber()
    uid: number;

    @IsOptional()
    @IsUrl({ host_whitelist: ['localhost', 'img01.dmhmusic.com'] }, { message: "画廊图片链接格式不对", each: true })
    url?: string;

    // raw?: UploadRawFile;
    @IsEnum(PictorialEnum,{message:"照片类型必传"})
    picType?: PictorialEnum
}